package 滑动窗口;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 *给定两个大小分别为 m 和 n 的正序（从小到大）数组 nums1 和 nums2。
 * 请你找出并返回这两个正序数组的 中位数 。
 * 输入：nums1 = [1,3], nums2 = [2]
 * 输出：2.00000
 * 解释：合并数组 = [1,2,3] ，中位数 2
 *
 * 输入：nums1 = [1,2], nums2 = [3,4]
 * 输出：2.50000
 * 解释：合并数组 = [1,2,3,4] ，中位数 (2 + 3) / 2 = 2.5
 *
 */
public class LeetCodeDemo4 {
    public static void main(String[] args) {
        int[] nums1 = {1, 3};
        int[] nums2 = {2};
        int midNum = getMidNum(nums1, nums2);
        System.out.println(midNum);
    }

    private static int getMidNum(int[] nums1, int[] nums2) {
        if (nums1 == null) {
            int len = nums2.length;
            if (len % 2 == 0) {
                return nums2[len / 2] + nums2[len / 2 - 1];
            }
        }
        if (nums2 == null) {
            int len = nums1.length;
            if (len % 2 == 0) {
                return nums1[len / 2] + nums1[len / 2 - 1];
            }
        }

            List<int[]> list1 = Arrays.asList(nums1);
            List<int[]> list2 = Arrays.asList(nums2);
            List<int[]> list = Stream.concat(list1.stream(), list2.stream()).sorted().collect(Collectors.toList());
            Integer[] array = (Integer[]) list.toArray();
            if (array.length % 2 == 0){
               return (array[array.length / 2 - 1]+array[array.length / 2 + 1]) / 2;
            }else {
                return array[array.length / 2];
            }

    }
}
